package com.hspedu.hspliving.commodity.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hspedu.common.utils.PageUtils;
import com.hspedu.common.utils.R;
import com.hspedu.hspliving.commodity.entity.AttrAttrgroupRelationEntity;
import com.hspedu.hspliving.commodity.entity.AttrEntity;
import org.springframework.web.bind.annotation.PathVariable;

import java.util.List;
import java.util.Map;

/**
 * 商品属性表
 *
 * @author bing
 * @email bing@gmail.com
 * @date 2024-06-23 20:32:22
 */
public interface AttrService extends IService<AttrEntity> {

    /**
     * 获取某个分组可以关联的属性
     1. 如果某个属性被某个属性分组关联了，就不能再关联
     2. 某个属性分组能够关联的属性，必须是同一个分类
     * @param params
     * @param attrgroupId
     * @return
     */
    PageUtils getAllowRelationAttr(Map<String, Object> params, Long attrgroupId);

    /**
     * 删除属性组和属性的关联
     */
    void deleteRelation(AttrAttrgroupRelationEntity[] attrAttrgroupRelationEntities);

    //根据属性组id 返回关联的 基本属性
    List<AttrEntity> getRelationAttr(Long attrgroupId);

    PageUtils queryPage(Map<String, Object> params);

    /**
     * 保存商品属性，并同时保存商品属性和所在属性组的关联关系
     * @param attr
     */
    void saveAttrAndRelation(AttrEntity attr);

    void updateAttrAndRelation(AttrEntity attr);

    void delAttrAndRelation(List<Long> list);

    /**
     * 根据分类id,和基本属性名进行分页查询
     * @param params
     * @param categoryId
     * @return
     */
    PageUtils queryBaseAttrPage(Map<String, Object> params, Long categoryId);

    /**
     * 根据分类id,销售属性名进行分页查询
     * @param params
     * @param categoryId
     * @return
     */
    PageUtils querySaleAttrPage(Map<String, Object> params, Long categoryId);

    R queryAttrGroupNameByBaseAttrId(String attrId);
}

